home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pine / pine3.07 / doc / tech-notes.me < prev    next >
Encoding:
Text File  |  1992-07-15  |  92.1 KB  |  2,281 lines

  1. .he ''- Pine Technical Notes -''
  2. .fo ''- % -''
  3.  
  4. .sz 25
  5. .ce 2
  6. Pine Technical Notes
  7. .sp 0.3
  8. .sz 20
  9. .br
  10. Version 3.0, July 1992
  11. .sp 0.6i
  12. .sz 12
  13. .ce 1
  14. .b "Section I -- Installation, Design and Internals"
  15. .(x
  16. .b "Section I -- Installation, Design and Internals"
  17. .)x
  18.  
  19. .uh "Building and Installation"
  20. .(x
  21. Building and Installation
  22. .)x
  23. .pp
  24. Hopefully, by this time you've already built Pine and tried it out.
  25. If not, you should be able to do it without too much trouble by picking
  26. the platform you want to build it for and giving the command "./build
  27. xxx" where "xxx" is the three letter abbreviation for the platform
  28. name.  The list of these abbreviations is in the file "doc/pine-ports".
  29. You must be in the root of the source tree when you give the build
  30. command. If there's nothing in pine-ports for the system you have,
  31. building Pine and Pico will be a little or a lot more involved. The
  32. first thing to try is to pick a platform you think is close and try it, 
  33. for example a different version of the same operating system. If it doesn't
  34. work you can try another.  Giving the command "./build clean" between
  35. attempts is a good idea. It makes sure you start the compilation from
  36. scratch each time. If nothing works then some real porting will have
  37. to be done.  See the sections on bugs, porting and source code below.
  38. The source code is about 4Mb and fully compiled it takes up 7-10Mb
  39. depending on the platform. You can do it in less space if you build
  40. Pine and Pico by hand and delete .o files as you compile each library.
  41.   
  42. .pp
  43. When you're done building Pine you should have four binaries in the
  44. bin directory. If they didn't all compile you may still be OK. The
  45. binary, imapd, is only needed if you want to operate pine in
  46. client-server mode and mtest is used mostly for testing imapd. The Pine 
  47. binary is the mailer and the Pico binary is a stand alone text editor
  48. that's similar to the message composer. Pico is not needed to run Pine
  49. or vice versa.
  50.   
  51. .pp
  52. Usually, all you need to do to install Pine and Pico is to copy the
  53. pine and pico binaries from the bin directory to the local system bin
  54. directory so they can be execute by all users. /usr/local/bin is most
  55. frequently used.  /usr/bin is also a possible place but they will get
  56. mixed in with your standard system programs if you put them there. All
  57. the help text is compiled into Pine so there are no required auxiliary
  58. files.
  59.   
  60. .pp
  61. There are however, two optional auxiliary files:
  62. /usr/local/lib/pine.info and /usr/local/lib/pine.conf. The first one
  63. is can contain text on how to get further help on the local system.
  64. It is presented as the first page of the help text for the main menu
  65. and should probably refer to the local help desk or the system
  66. administrator. If this file doesn't exist a suitably generic text is
  67. shown (that suggests sending mail to root as one way to get help). The
  68. other file is used to configure the 2 0 or so options that Pine has.
  69. See the section on configuration in this document.
  70.   
  71. Here's a step by step recipe:
  72.  
  73. .ip  1.
  74. Figure out what platform you're building Pine for. You can give the     
  75. command "./build help" to get a short list of platforms. If it's not
  76. in that list you can look in the file doc/pine-ports (give the command
  77. "more doc/pine-ports" to view it). What you need is the three
  78. letter code for the platform. Some examples are "nxt" for a NeXT cubes
  79. and slabs and "ult" for Ultrix.
  80.    
  81. .ip 2. 
  82. Make sure your in the root of the pine source. When you type "ls"
  83. you should see the following files and directories:
  84. .(l
  85. README    build     contrib   imapd     pico
  86. bin       c-client  doc       makefile  pine
  87.  
  88. .)l
  89.     
  90. .ip  3.
  91. You can make sure you're getting a clean start by giving the command
  92. "./build clean". This should take a few seconds to run.
  93.      
  94. .ip  4.
  95. Give the command "./build xxx" where "xxx" is the three letter code
  96. you picked in step 1. The compiler should grind away for 10 minutes or
  97. so. You shouldn't see any compiler warnings or errors, though
  98. there might be some if your system doesn't match the system
  99. you've specified to build.
  100.  
  101. .ip  5. 
  102. When the compilation is complete the sizes of the four binaries
  103. built will be displayed. The binaries are in the source directories
  104. with links to the binaries are in the "bin"
  105. directories. You can just get them out of "bin".
  106.  
  107. .(x  
  108. Design goals
  109. .)x
  110. .uh "Design goals"
  111.  
  112. .pp
  113.  Pine was designed for novice computer users. To achieve this, features
  114. included were limited and carefully selected.  This may have made Pine
  115. less attractive for power users, but the assumption was that there were
  116. many power user e-mail tools available for UNIX systems. It seemed very
  117. important to carefully consider questions that users asked.  Advanced
  118. users are articulate about the changes they would like.  Beginning users
  119. are not articulate and may walk away confused, not commenting if a
  120. program doesn't work out for them.  Thus, if one continues development of
  121. a program based on users comments one may wind up with something suitable
  122. for advanced users, but lose the beginning users.  To keep to the design
  123. goals, the questions users asked about Pine were examined to determine
  124. the areas that weren't clear.  That is, when a user asked a question it
  125. was assumed that Pine could be clearer about the way it worked rather
  126. than assuming the user didn't understand.
  127.  
  128. .pp
  129. Some other principles are:
  130.  
  131.  - The underlying model presented to the user has to be simple and
  132. clear. To this end a lot of UNIX is hidden. For example, there is a
  133. simple list of folders without hierarchy and pathnames. 
  134.  
  135.  - It's better to have a few general, easily understood, commands that
  136. can be repeated than to have some more sophisticated command that will
  137. do the job all at once. This is one reason Pine has no aggregate
  138. operations.
  139.  
  140.  - When ever the user has to select a command, file name, address etc,
  141. the user is given a menu or can get a menu to make the selection from.
  142. If possible the menu is as complete as possible (no hidden commands),
  143. small and well thought out. This isn't entirely possible with things
  144. like addresses, but the address book helps.
  145.  
  146.  - Pine provides immediate feed back for the user with each operation.
  147.  
  148.  - The system should be very tolerant of user errors. It should warn
  149. him if he's about do to something irreversible or provide a way to
  150. undo something. This way the user can learn by exploration with out
  151. fear of doing anything wrong. This is an important feature so the
  152. user can get started quickly without reading any manuals and so fewer
  153. manuals are required. (At the moment there isn't any manual anyway).
  154.  
  155.  - The size of the system should be kept small so the user doesn't
  156. feel like there are all these commands and concepts that he 
  157. .b should 
  158. know while using the system. 
  159.  
  160. .(x
  161. IMAP (The Interactive Mail Access Protocol)
  162. .)x
  163. .uh "IMAP (The Interactive Mail Access Protocol)"
  164.  
  165. .pp
  166. Pine is capable of operating as an IMAP client. The syntax for
  167. naming an IMAP mailbox is {hostname}mailbox. Hostname is a standard
  168. DNS hostname and mailbox is the path of the mail file to be opened. It
  169. may be "inbox" to specify the systems idea of the inbox, or it may
  170. be a file path name relative to the users home directory. For example
  171. "mail/sent-mail". The remote host must be running an imapd and the
  172. user will be required to authenticate himself with a user name and
  173. password. 
  174.  
  175. .pp
  176. If "rimap" authentication is enabled on the remote host an .rhosts
  177. file on the server will allow the user to bypass typing the password.
  178. This works by having the client use the standard rsh mechanism to
  179. connect to the server which results in two extra rsh processes on the
  180. client. Basically what is happening here is that Pine is taking
  181. advantage of the ability that rsh has to use privileged TCP
  182. ports so it doesn't have to run in privileged mode. If the "rimap"
  183. authentication fails it will drop back to plain password
  184. authentication. Enabling "rimap" authentication is done by creating a
  185. link called rimapd to imapd.
  186.  
  187. .pp
  188. Installing imapd requires placing the binary in the appropriate
  189. directory, usually /usr/etc and adding entries to /etc/services and
  190. /etc/inetd.conf. The following line is appropriate for /etc/services:
  191.  
  192.   imap         143/tcp         # Mail transfer
  193.  
  194. and this next line is appropriate for /etc/inetd.conf:
  195.  
  196.   imap    stream    tcp    nowait    root    /usr/etc/imapd imapd
  197.  
  198. The /etc/inetd.conf file entry may vary on different versions of UNIX.
  199. Some have a slightly different set of fields. Also the path name in
  200. /etc/inetd.conf must match the path where imapd is installed.
  201.  
  202. .pp
  203. At this point one may ask, what is IMAP and why is it useful? A
  204. complete answer would be fairly long. Basically IMAP is a mail access
  205. protocol as distinguished from a mail transfer protocol.  It's
  206. intended for interactive mail access. It's closest kin is POP, the
  207. Post Office Protocol, but it exceeds POP in many ways. POP works by
  208. transferring an entire mailbox to the client where all the mail is
  209. kept.  IMAP retains all mail on the server and allows the client to
  210. retrieve mail as it's read and then send commands back to the server
  211. to specify what is to be done with the mail. The advantages of this is
  212. that it works well over low bandwidth lines because only what's needed
  213. is transferred, then mail is cached on the client. However, POP is
  214. appropriate where connect time charges are high. Other advantages of
  215. IMAP are that the mail is stored on a reliable, always up, server;
  216. that the mail can be accessed from many different clients in different
  217. places and is not stuck on a PC (probably with no backups); and that
  218. it allows one to take advantage of cheaper CPU cycles on the desk top
  219. to drive the user interface rather than expensive cycles on time
  220. sharing machines. One imap client can also be used to access several
  221. mail servers at once. The general idea is to run a mail client on the
  222. machine where a user has his home directory, to facilitate moving
  223. information between the mail system and user's file system, but to
  224. deliver mail to and maintain one's inbox on a high availability
  225. server.
  226.  
  227. .pp
  228. Currently, Pine supports having one's inbox remote via IMAP. This
  229. feature is invoked by entering a {host}inbox value for the inbox-path
  230. option either the global pine configuration file or in a users .pinerc
  231. file. Access to other remote folders require the users to type the
  232. full IMAP mail box specification.  Future plans include simpler access
  233. to remote folders other than inbox.
  234.  
  235. .pp
  236. Some other sources of information are RFC-1176 and imap-viewgraphs.ps
  237. included here. You can also fetch the whole imap source tree and
  238. developers kit from ftp.cac.washington.edu. The IMAP protocol and
  239. the c-client library that implements it are authored by Mark Crispin.
  240.  
  241. .(x
  242. Address Formats (RFC-822 Compliance)
  243. .)x
  244. .uh "Address Formats (RFC-822 Compliance)"
  245.  
  246. .pp
  247. Pine tries to adhere to RFC-822 a little more strongly than 
  248. some other mailers and uses the "full name <address>" format
  249. rather than the "address (full name)" format. The intent of the
  250. standard is that items in parenthesis should only be for comments.
  251. Pine displays and generates the newer format, but will
  252. parse the old format and turn it into the new one.
  253.  
  254. .pp
  255. Pine also fully qualifies all addresses on outgoing mail with the
  256. host or domain name as described in the section on domain names. This
  257. makes addresses more clear and unambiguous as networks get larger and
  258. span greater distances and gives a hint to the user that the network
  259. extends beyond the local organization.  Typing the fully qualified
  260. address is not required, just the user name is sufficient. When the
  261. user moves the cursor out of the header field the address will be
  262. expanded and fully qualified.  Note that because the newer format is
  263. used, commas are required to separate addresses since the full name
  264. part may have spaces in it.  If any special characters as defined in
  265. RFC-822 appear in the full name, quotes are required around the
  266. address. Pine will insert them automatically. The common cases where
  267. this happens are with periods after initials and parentheses. A good
  268. substitute for parentheses are curly braces. They are not considered
  269. special.
  270.  
  271. .pp
  272. On some UUCP connected machines and for UUCP addresses, fully
  273. qualified addresses may seem to confuse or break things. This
  274. is probably not the case though, because the local hostname is what is
  275. added. The mailer will recognize it as the local hostname and drop
  276. that part first before going on to process the rest of the address. 
  277.  
  278. .pp
  279. Pine also expects dates to be in the standard RFC-822 format which
  280. is something like:
  281.  
  282.   [www, ] dd mmm yy hh:mm[:ss] [timezone]
  283.  
  284. It will attempt to parse dates that are not in this format. When an
  285. unparsable date is encountered it is displayed as "xxx xx" when
  286. shown in the index.
  287.  
  288. .(x
  289. Known Bugs and Problems
  290. .)x
  291. .uh "Known Bugs and Problems"
  292.  
  293. .pp
  294.  In general, see the to-do-xxxx file included with this documentation.
  295. At the U.W. Pine is used by 3,000 users every week, most of the bugs
  296. have been shaken out of it, though the MIME code is new and has not
  297. been heavily used yet.
  298.  
  299. .(x
  300. Domain names
  301. .)x
  302. .uh "Domain names"
  303.  
  304. .pp
  305. Pine needs to know the full host and domain name of the site it is
  306. running on.
  307.  
  308. (Domain names are a feature of the Internet and are used
  309. to uniquely name each host on the network. A domain name has a number
  310. of parts separated by periods. Each part represents a level in the
  311. hierarchy. An example of a name is
  312.  
  313.           "olive.cac.washington.edu"
  314.  
  315. In this name the top level is "edu", indicating it is part of an
  316. educational institution; the second level is "washington" indicating
  317. the University of Washington; "cac" is a specific department; and
  318. "olive" is the hostname. The top level names are assigned by Internet
  319. organizations, and other names are assigned at the appropriate level.
  320. The Domain Name Service, DNS, or named on UNIX systems is the
  321. distributed data base used to look up these names. The file /etc/hosts
  322. usually sets the name of the local host. If you are not on the
  323. Internet or other network you can probably just use a single part
  324. hostname)
  325.  
  326. .pp
  327. Pine determines the domain name it uses as follows. If no settings are
  328. made in the users .pinerc or in /usr/local/lib/pine.conf then it uses
  329. the domain name looked up from the system. This usually comes out of
  330. /etc/hosts, DNS or the local configuration data base (e.g. Yellow
  331. Pages). If this look up fails and there are no other settings Pine
  332. will exit with the error message "No host name or domain name set."
  333.  
  334. .PP
  335. Often it happens that the domain name that Pine gets from the
  336. hostname lookup is not the fully qualified domain name because of the
  337. way the /etc/hosts file is set up. When this occurs Pine cannot fully
  338. qualify the addresses it sends out. It isn't essential that the name
  339. be fully qualified, but it is highly desirable because it can avoid
  340. some mail routing problems. In some cases sendmail will fully qualify
  341. the addresses as it's delivering the mail. Specifically, the problem
  342. is because the entry in /etc/hosts for the local system has the
  343. unqualified name first and the fully qualified name following as an
  344. alias as follows:
  345. .(l
  346. 128.95.112.99   olive.cac.washington.edu   olive             
  347.  
  348.             is preferred over
  349.  
  350. 128.95.112.99   olive   olive.cac.washington.edu 
  351. .)l
  352.  
  353. .pp
  354. The domain name may be set explicitly with the "user-domain" variable
  355. in either the user .pinerc or /usr/local/lib/pine.conf. If set in
  356. /usr/local/lib/pine.conf it affects all Pine users on the system. This
  357. setting overrides the system setting.
  358.  
  359. .pp
  360. At the University of Washington an effort has been made to encourage
  361. host-less addresses so that users may move from one host to another
  362. without changing there e-mail addresses. This usually requires some
  363. sort of data base at the domain level to direct the mail to a
  364. particular host. In place of a data base, all mail could be directed
  365. at one host. To facilitate this you can set the "use-only-domain-name"
  366. to "yes", and Pine will strip off the host part of the address. In the
  367. example above, the host-less address would be "cac.washington.edu".
  368. This stripping is achieved by removing the first part of what is
  369. assumed to be the full hostname. The removal of the host part is only
  370. applied to the full hostname looked up from the system and not to the
  371. one set by the "user-domain" variable.
  372.  
  373. .pp
  374. Once the domain name is determined, Pine uses it for qualifying all
  375. unqualified outgoing addresses and in the From: in outgoing mail.
  376. It is also used to determine if an address is that of the current Pine
  377. user. The full host name is also used in the internal message ID. 
  378.  
  379.  
  380.  
  381. .(x
  382. Pine Configuration (system wide and per user)
  383. .)x
  384. .uh "Pine Configuration (system wide and per user)"
  385.  
  386. .pp
  387. There are two configuration files in Pine: the system wide
  388. configuration file, /usr/local/lib/pine.conf; and the per user
  389. configuration file, .pinerc in each users home directory. The syntax
  390. of the variables or options in them is the same. In a number of cases
  391. the variables are the same too. The syntax is:
  392. .(l 
  393. <variable> = <value> 
  394. .)l 
  395. If
  396. the value is absent then the variable is unset. To set a variable to
  397. the empty value the syntax is "". Quotes may be used around any value.
  398. All values are strings and end at the new line or the closing quote.
  399. Leading and trailing space is ignore unless it is included in the
  400. quotes. For some variables the only appropriate values are "yes" and
  401. "no". If a variable is set in the system configuration file and
  402. the per user configuration file, the per user setting takes
  403. precedence. If a local variable is unset (usually the case for most
  404. variables) the system value is used. If the system value is unset then
  405. the compiled in default value is used.
  406.  
  407. .pp
  408. Both files may contain comments which are lines beginning with a "#".
  409. You may get a sample/fresh copy of the system configuration file by
  410. running "pine -conf". The result will be printed on the standard
  411. output with comments describing each variable. All the possible
  412. variables are included in this. The best thing to do is create the
  413. file initially with this command and then edit in the values you want
  414. to set. Pine will run fine without this file.
  415.  
  416. .pp
  417. References to UNIX environment variables may be included in the pine
  418. configuration file. The format is "$variable" or "${variable}".
  419. The character "~" will be expanded to the $HOME environment variable. 
  420.  
  421. .pp
  422. Pine will automatically create the per user .pinerc file the first
  423. time it is run. It will write entries for each variable with comments
  424. so one knows what all the possible variables are by just looking in
  425. the file. Pine reads and writes the .pinerc file occasionally during
  426. normal operation as state, like the printer configuration, is
  427. changed. Any comments or additional lines in the file will be carried
  428. along as the file is rewritten. This will guarantee backward
  429. compatibility with old versions as new variables are added to
  430. subsequent versions of Pine. It also allows the user to put additional
  431. comments in the .pinerc. Pine always writes this file at least once
  432. when running so you can tell when a user last invoked Pine by the date
  433. on this file. This is how the pine-use program (which you can compile
  434. and use) counts up the current Pine users.
  435.  
  436. .pp
  437. Currently, most of these variables have to be set by hand with an
  438. editor.  Eventually it would be nice if Pine had a user interface
  439. to set these variables so the users don't have to venture out with a
  440. text editor. It's intended that only experienced users make settings
  441. with the current scheme.
  442.  
  443. Descriptions of the variables:
  444.  
  445. .ip user-id
  446. This is disabled for time sharing machines, but may be used on
  447. versions for PCs.
  448.  
  449. .ip personal-name
  450. Your full personal name. Normally this is taken from
  451. the accounts data base (/etc/passwd) on most systems and doesn't need
  452. to be set, but you can over ride the systems idea of who you are with
  453. this. This is only appropriate in the user .pinerc
  454.  
  455. .ip printer
  456. This is the current setting for a users printer. It's usually the
  457. same value as the standard-printer, the personal-print-command or
  458. "attached-to-ansi". The value of this in the system configuration file
  459. specifies the default value if users don't set their own. The setting
  460. of this variable is done by the printer selection screen in Pine.
  461.  
  462. .ip standard-printer
  463. Specifies the command for printer selection number 2 on the printer
  464. menu. This is only in the system configuration file.
  465.  
  466. .ip personal-print-command
  467. Only in the per user configuration. This corresponds to item 3 in
  468. the printer menu. This variable retains the personal-print-command
  469. when the printer is set to something other than item 3.
  470.  
  471. .ip last-time-prune-questioned
  472. Despite it's silly name, this variable records the month the user
  473. was last asked if his sent-mail folders should be pruned. The format
  474. is yy.mm. This is automatically updated by Pine when the the pruning
  475. is done or declined. This is only in the per user configuration.
  476.  
  477. .ip user-domain
  478. Sets the domain or host name for the user, overriding the system
  479. host or domain name. See the domain name section. This can be set for
  480. the whole system and for each user.
  481.  
  482. .ip use-only-domain-name
  483. Can be set to "yes" or "no". At this point anything but "yes" means
  484. "no", except when it is unset. If set to yes one part of the hostname
  485. will be lopped off to get the domain name and the domain name will be
  486. used for outgoing mail and such. That is, if the hostname is
  487. "milton.u.washington.edu" and this variable is set to "yes", then
  488. "u.washington.edu" will be used on outgoing mail. This can be set for
  489. the whole system and per user.
  490.  
  491. .ip inbox-path
  492. This specifies the name of the folder to use for the inbox. Normally
  493. this is unset so the system's default is used. The most common
  494. setting of this is to open an IMAP mailbox for the inbox. For example
  495. "{marge.cac.washington.edu}inbox" will open the user's standard inbox
  496. on the mail server, marge. This can be set per user and for the whole
  497. system.
  498.  
  499. .ip elm-style-save
  500. Setting this to "yes" will cause Pine to generate default folder
  501. names when saving messages similar to the way elm does. The folder will
  502. be named for the username of the sender of the message. This can be
  503. set per user and for the whole system.
  504.  
  505. .ip header-in-reply
  506. This governs whether or not the header of the original message is
  507. included when including the original text of a message in a reply.
  508. This can be set per user and for the whole system.
  509.  
  510. .ip default-fcc
  511. The name of the folder to which all outgoing mail goes is set here. The
  512. compiled-in default is "sent-mail". It can be set to "" to turn off
  513. saving copies of outgoing mail and can be set on a per user or system
  514. wide basis.
  515.  
  516. .ip "bugs-nickname, bugs-fullname and bugs-address"
  517. These can only be set for the whole system and specifies an entry for
  518. the address book that is always inserted if found absent. It is a
  519. way to put the address to send requests for help to in everyone's
  520. address book so users can find it easily.
  521.  
  522. .ip smtp-server
  523. When this variable is set to a host name or IP address Pine will try
  524. to drop off outgoing mail to the specified host via SMTP instead of sending
  525. it by passing it off to sendmail.
  526.  
  527. .ip editor
  528. Sets the name of the alternate editor for composing mail. It will be
  529. invoked with the "^_" command.
  530.  
  531. .ip image-viewer
  532. This variable names the program to call for displaying 
  533. parts of a MIME messages that are of type image. It is usually set to
  534. xloadimage or xv. In a future version of Pine this configuration will be
  535. replaced by the more general "mailcap".
  536.  
  537.  
  538. .ip feature-level
  539. This controls the user level for Pine. It may be set to "seedling" for
  540. novice users, "sapling" for intermediate users and "old-growth" for
  541. advanced users. In Pine 3.0 there is no difference between seedling
  542. and sapling modes, and old-growth just adds the "H" command to view
  543. the full header and allows the "^_" command in the composer to invoke an
  544. alternate editor.
  545.  
  546. .ip old-style-reply
  547. Setting this to "yes" will cause the signature to appear at the end of
  548. the original, included text in a reply instead of at the beginning. See
  549. details in the section on replying and signatures.
  550.  
  551. .ip signature-file
  552. Names the file to be included as the signature. This defaults to
  553. ".signature".
  554.  
  555. .ip mail-directory
  556. Use this to change the subdirectory that Pine puts its mail files in.
  557. The default is "mail".
  558.  
  559. .ip character-set
  560. This sets the character set used by the terminal. Currently appropriate
  561. values are US-ASCII and ISO-8859-1 through ISO-8859-9. See the section
  562. on character sets for more details. The default is US-ASCII.
  563.  
  564. .ip show-all-characters
  565. If this is set to yes, Pine will display all 8 bits of any text
  566. received, regardless of whether it matches the character set currently in
  567. use.
  568.  
  569. .ip new-version
  570. If this is on, a message explaining that this is a new version of Pine
  571. will be given. In Pine 3.02 this is on by default and should be set to
  572. "no" to turn off this message. 
  573.  
  574. .(x
  575. Mail folder reading, writing, locking and check pointing
  576. .)x
  577. .uh "Mail folder reading, writing, locking and check pointing"
  578.  
  579. .pp
  580. All mail files (folders) are read and written by the c-client
  581. library. Extensive effort has gone into making this as robust as
  582. possible. The c-client provides locking against several user having a
  583. mail file open at once.  This is beyond the usual UNIX locking which
  584. just guarantees that two processes won't write the file at the
  585. same time and are known as "MRC" locks, named after Mark Crispin. The
  586. second user that attempts to open the folder with Pine will get it
  587. opened read-only.  Because there is generally no such locking
  588. convention on UNIX platforms this additional locking is only effective
  589. against multiple uses of Pine or other mailers using the c-client
  590. such as MailManager, ms and a few others. Berkeley mail(1), elm, mh and such
  591. will be able to open the mail folder when Pine has it open.  If the
  592. mail file changes on the disk underneath Pine or the c-client, they
  593. will give up on the mail file and close it. Pine also checkpoints the
  594. mail file every so often depending on how many changes have been made
  595. and how long it has been since the last change. This minimizes the
  596. potential for loss.
  597.  
  598. .pp
  599. With Berkeley format mail files, there are three modification
  600. operations done to mail folders: appending new messages, rewriting the
  601. file to delete messages and rewriting to changes status flags.
  602. Appending messages is a special case and doesn't threaten the
  603. integrity of the mail already in the file. If an append can't be
  604. completed for some reason, such as a full disk, the whole append is
  605. aborted and the mail file left as is. When rewriting the mail file
  606. more care has to be taken. What the c-client, and therefore Pine, does
  607. is first calculate how much the mail file would grow if all the status
  608. flags were inserted in their longest form. Then the mail file is
  609. extended by that amount, writing nulls past the end of the file to be
  610. sure there's room on the disk and to reserve the space. If the extend
  611. was successful, the mail file is rewritten over the existing data
  612. without truncating the file. This is to make sure the disk space
  613. originally occupied by the mail file is not consumed by some run away
  614. disk-block-eating process.
  615.  
  616. .pp
  617. The extended locking works by creating lock files in /tmp of the
  618. form ".\\usr\\spool\\mail\\joe". Flock() is then used on these files; their 
  619. existence does not constitute a lock. This lock is created when the
  620. folder is opened and destroyed when it is closed. When the folder is
  621. actually being written the standard Berkeley locks are also created.
  622. One could say the Berkeley locks are created within the other locks.
  623. This way new mail can be delivered into an open folder.
  624.  
  625. .pp
  626. If a mail file is modified underneath of Pine while it has it open,
  627. Pine will give up on that mail file, concluding it's best not to do
  628. any further reads or writes. This can happen if another mailer that
  629. doesn't obey MRC locks (e.g. elm, or mail) is run while Pine has the
  630. mail folder open.
  631.  
  632. .pp
  633. Pine can read and write mail files via NFS, but IMAP is preferred.
  634. Some modifications have been made to the way it operates on the mail
  635. files to make things work better with NFS, but they are not guaranteed
  636. to work with all versions of NFS or as reliable as writing to a
  637. standard file system. See the NFS section for more details.
  638.  
  639. .(x
  640. Terminals and Termcap
  641. .)x
  642. .uh "Terminals and Termcap"
  643.  
  644. .pp
  645. Pine has been designed to require as little as possible from the
  646. terminal. It uses termcap or terminfo depending on how it
  647. was compiled. At the minimum Pine requires cursor positioning, clear to
  648. end of line and inverse video. Unfortunately there are terminals that
  649. are missing some of these such as a vt52. Pine makes no assumptions as
  650. to whether the terminal wraps or doesn't wrap. If the terminal has
  651. other capabilities it will use them. Pine won't run well on older
  652. terminals that require a space on the screen to change video
  653. attributes such as the Televideo 925. One can get around this on some
  654. terminals by using "protected field" mode. The terminal can be made to
  655. go into protected mode for reverse video, and then reverse video is
  656. assigned to protected mode.
  657.  
  658. .pp
  659. Pine handles screens of most any size and resizing on the fly. It
  660. catches SIGWINCH and does the appropriate thing. A screen one line
  661. high will display only the new mail notification. Screens that are
  662. less than ten columns wide don't format very nicely or work well, but
  663. will function fine again once resized to something large. There is an
  664. internal maximum screen size, currently 170 columns by 200 rows. If
  665. the screen is made bigger than it, the whole screen won't all be used.
  666. These maximum values are set in os-xxx.h and can be changed, but
  667. increasing them will increase memory usage.
  668.  
  669. .(x
  670. Memory Usage
  671. .)x
  672. .uh "Memory Usage"
  673.  
  674. .pp
  675. The current Pine/C-client architecture isn't the most efficient in
  676. it's memory use. It reads in the whole mail folder as it's parsing it.
  677. It also makes in-memory copies of messages as they are forwarded,
  678. saved and such, so it doesn't operate very efficiently on messages
  679. over 1Mb, but normal operation is OK. Some work has been done already
  680. to ameliorate the situation and more is possible. 
  681.  
  682. .(x
  683. Sendmail, SMTP and mail delivery
  684. .)x
  685. .uh "Sendmail, SMTP and mail delivery"
  686.  
  687. .pp
  688. Pine submits outgoing mail either to sendmail or to an SMTP server
  689. for delivery.  When using sendmail, it writes the message to a 
  690. temporary file in /tmp.  Then it runs a shell in the background that
  691. runs sendmail on the file and removes the file. It's done with a shell
  692. in the background so the user doesn't have to wait for sendmail to
  693. finish.  Sendmail is invoked with the "-t" flag to cause it to read
  694. and parse the header to determine the recipients; the "-oem" flag to
  695. cause errors to be mail back; and the "-oi" flag to ignore dots in
  696. incoming messages. (The dots are used to indicate things such as the
  697. end of the message).
  698.  
  699. .pp
  700. To make Pine operate as an SMTP client, the smtp-server variable can
  701. be set to the IP address or hostname of the SMTP server. When a
  702. message is sent Pine will post the message directly to the SMTP
  703. server. This is particularly useful with Pine running on UNIX
  704. workstations with IMAP because it saves having to configure sendmail
  705. on the workstation. It is also essential for the DOS version since
  706. there is no alternative to SMTP.
  707.  
  708.  
  709. .(x
  710. The Berkeley Mail file format and locking
  711. .)x
  712. .uh "The Berkeley Mail file format and locking"
  713.  
  714. .pp
  715. Here are the grungy details on how the Berkeley mail file format
  716. works. This format comes to us from the ancient UNIX mail
  717. program, /bin/mail. This program was actually used to interactively
  718. read mail at one time, and is still used on some systems as the local
  719. delivery agent. The messages in the file are separated by lines of the following
  720. format:
  721.  
  722. "From user-name WWW MMM DD HH:MM:SS YYYY\\n"
  723.  
  724. "User-name" is from the envelope and the date is as printed out by
  725. ctime(). This separator must be at the beginning of a line and should have
  726. a blank line before it. The mail file usually ends in "\n\n". Because
  727. of the format of the separators, no lines in the mail message can
  728. begin with "From ", space included, so they are modified to be ">From
  729. ". You'll see this occasionally in mail messages. The date is the date
  730. the message was first received and should be carried along if the
  731. message is copied to another folder. This format is
  732. antiquated and should be replaced!
  733.  
  734. .pp
  735. There are two kinds of locking that are commonly done. The older form
  736. creates a "xxxx.lock" file in /usr/spool/mail to lock the mail box
  737. "xxxx". This makes use of the fact the directory operations are
  738. atomic in UNIX. It also mostly works across NFS. There are involved
  739. algorithms used to determine if a lock is held and should be broken.
  740. Usually the calculation takes into account the load on the system.
  741.  
  742. .pp 
  743. The other locking scheme uses the flock() system call on the mail
  744. box. This is much more efficient and the locks can't get stuck because
  745. they go away when the process that created them dies. This is usually
  746. found on 4.3bsd and related machines.
  747.  
  748. .pp
  749. These locks only control actual reading and writing to the file. When
  750. new mail is being delivered, messages are being deleted or status being
  751. updated these locks are used. For small mail files they should never
  752. be around for more than a few seconds. This is normally the only
  753. locking used for mail on UNIX mail system. The c-client/Pine extends
  754. this locking to prevent multiple mail readers from opening the same
  755. mail folder for modification twice. See the section on "Reading,
  756. Writing, Checkpointing and Locking".
  757.  
  758. .(x
  759. Accessing mail folders via NFS
  760. .)x
  761. .uh "Accessing mail folders via NFS"
  762. .pp
  763. It is possible to access NFS mounted mail folders with Pine, but there
  764. are some drawbacks to doing this. One is that the per folder "MRC"
  765. locks don't work because /tmp is usually not shared, and even if it
  766. was, flock() doesn't work across NFS. This is the lock added by Pine
  767. and not the standard UNIX mail file lock against writing.
  768. .pp
  769. The implementation of the standard UNIX ".lock" file locking has been
  770. modified to work with NFS as follows. Standard hitching post locking
  771. is used: First a uniquely named file is created. Usually something like
  772. "inbox.host.time.pid". Then a link to it is created named
  773. "inbox.lock" where the folder being locked is "inbox".
  774. This file constitutes the lock. This is a
  775. standard UNIX locking scheme. It works because the link(2) system call is atomic. With NFS, link(2) is still guaranteed to be atomic, but packets
  776. can get lost and cause problems. The worst case happens when the link
  777. request makes it to the server and the link is actually made on the
  778. server, but the
  779. acknowledge packet gets lost. The client then retransmits the link
  780. request. When it arrives at the server, the server doesn't know it's
  781. not a new request (NFS is stateless) and returns saying the link
  782. already exists, so the whole link operation fails. The mail software
  783. will conclude the mailbox is locked and that it should wait. 
  784. .pp
  785. This has been worked around by ignoring the return code from link(2).
  786. After the link returns, a stat(2) is done on the file. If the file
  787. has two links, it is concluded that the lock succeeded and it is safe
  788. to proceed.
  789.  
  790. .pp
  791. Another problem occurs with data caching. On many NFS implementations
  792. the client will never see new data appended to a file if the file is
  793. held open. Even a stat on the file will not reveal the new file size
  794. or modification time.
  795. This is quite different from standard UNIX file system
  796. semantics. To get around this, the c-client library reopens the file
  797. every time it checks for new mail.
  798.  
  799. .pp
  800. One last annoyance that hasn't been solved happens when the c-client
  801. detects a change in the modification time of the mail file, but no
  802. change in the size of the file. A warning message is given to the user
  803. (which usually confuses the users). Thus far this has only been an
  804. annoyance and not actual problems with the mail file have been found.
  805.  
  806. .pp
  807. In conclusion, it is mostly safe to access mail via NFS. The main
  808. problem will occur when two users try to access the same mail folder
  809. from different hosts. When the second user writes the file, Pine will
  810. get upset that the file has been changed underneath of it and abort
  811. operations on the folder. Pine will continue to display mail from the
  812. folder that it has in its internal cache, but it will not read nor write 
  813. any further
  814. data. The only thing that will be lost out of the
  815. first session when this happens is the last few deletion marks since
  816. the last checkpoint.
  817.  
  818. .uh "MIME -- Multipart Internet Mail Extensions"
  819. .(x
  820. MIME -- Multipart Internet Mail Extensions
  821. .)x
  822.  
  823. .pp
  824. Using the MIME standard, Pine is able to attach arbitrary files to mail
  825. messages. These files can be binaries, executables, spreadsheets, GIF,
  826. binhex, text files or any other sort. The receiver of the message will be
  827. able to detach the file exactly as it was sent. MIME messages may also
  828. include sounds, images and even video. Pine cannot display most of these
  829. formats, but it will identify each part or attachment and allow that part
  830. to be saved in a file.
  831.  
  832. .pp
  833. As of these notes for Pine 3.0, MIME is a very new standard and Pine
  834. is one of the early implementations of MIME, thus many conventions
  835. aren't clear and we have probably made some big mistakes. MIME is
  836. defined in RFC-1341 and is very soon expected to be accepted by the
  837. Internet agencies as an Internet
  838. standard. There are many other folks working on MIME implementations
  839. and we expect that it's use will become widespread on the Internet.
  840. Generally, MIME is a way of encoding, in ASCII, a multipart message
  841. structure. The parts may be nested and may be of seven different types:
  842. Text, Audio, Image, Video, Message, Application and Multipart
  843. (nested). Provisions are included for encoding any binary data in
  844. ASCII in a base 64 format similar to uuencode or btoa. MIME includes
  845. support for international character sets, tagging each part of a
  846. message with the character set it is written in and providing 7 bit
  847. encoding of 8 bit character sets. It also provides a
  848. simple "rich text" format for marking text as bold, underlined and such.
  849. There is a mechanism for splitting messages into multiple parts and
  850. reassembling them at the receiving end. 
  851.  
  852. .pp
  853. Pine is able to view and/or take apart just about any MIME message. It
  854. will display a list of all the parts, their types and sizes. All text
  855. parts will be shown unless it is not possible because of the character
  856. set. Rich text will be displayed in a very limited way (it will show
  857. bold and underlining).  Pine cannot play audio messages at all (yet),
  858. nor display video.  Image parts can be passed off to a program such as
  859. xloadimage to be viewed. Pine checks for the DISPLAY variable
  860. indicating it is running on an X-terminal. Pine will also display
  861. message and multipart types.  If the parts of a multipart message are
  862. alternate versions of the same thing Pine will select and display the
  863. one best suited. For parts of type message/external-body, the
  864. parameters showing the retrieval method will be displayed. Messages of
  865. type message/partial cannot currently be reassembled or sent.  Lastly,
  866. Pine cannot display the application type, but works well saving parts
  867. of type application/octet stream to files. (These are listed as type
  868. "file").  Any message part, regardless of type, can be saved to a file.
  869.  
  870. .pp
  871. The main focus of the MIME in Pine has been to provide attachments
  872. thus, Pine mainly generates messages with application/octet-stream parts
  873. along with the text parts. As a bit of a bonus, Pine will recognize
  874. GIF files and tag them as images so they can be displayed on
  875. X-terminals as mentioned above. When a file is attached to Pine the
  876. file is read and evaluated as to whether it is ASCII text, 8 bit text
  877. or binary.  If a file any lines longer than 500 characters in it or
  878. more than 10% of the characters 8 bit it will be considered binary. If
  879. the files has some 8 bit characters in it will be considered 8 bit
  880. text, otherwise it will be considered plain text. The first part of
  881. any multipart message generated in Pine will always be text with the
  882. other parts following.
  883.  
  884. .pp
  885. MIME has two ways of encoding 8 bit, or non-text data known as quoted
  886. printable and base64. Quoted printable leaves most of the text alone
  887. and only changes the 8 bit characters to "=" followed by the hex
  888. digits. For example "=09" is a tab. It has the advantage that it is
  889. mostly readable and that it allows for end of line conversions between
  890. unlike systems. Base64 encoding is similar to uuencode or btoa and
  891. just encodes a raw bit stream. These encodings are designed to get
  892. text and binary files through even the most improperly implemented and
  893. configured gateways intact.
  894.  
  895. .pp 
  896. Multipart messages can be forwarded and included in replies. How to
  897. do this with multimedia mail on a plain text device was not completely
  898. clear, so some improvements are possible. In both cases the parts of
  899. the original message will be included after some text. If the first
  900. part of the message was text you will be able to edit this text.  If
  901. the first part of the original was not text a new blank text part will
  902. be added. At present Pine has trouble with multiply nested multipart
  903. messages and is unable to forward or reply to them. A nested multipart
  904. message with a part of type message in between will be handled
  905. correctly. Messages can be forwarded as MIME attachments rather than
  906. just text when running in old-growth mode. When this is done the
  907. original message is included with all it headers and cannot be edited.
  908. The receiver will only see the filtered header as Pine filters the
  909. headers of sub-messages.
  910.  
  911. .pp
  912. When a user of a non-MIME mailer receives a multipart MIME messages it will
  913. look something like this:
  914. .sz 8
  915. .(l
  916. Date: Tue, 14 Jul 1992 17:55:17 -0700 (PDT)
  917. From: Laurence Lundblade <lgl@cac.washington.edu>
  918. Subject: Test MIME message
  919. To: Laurence Lundblade <lgl@cac.washington.edu>
  920.  
  921. --16820115-1435684063-711161753:#2306
  922. Content-Type: TEXT/PLAIN; charset=US-ASCII
  923.  
  924. The text of the message would go here. It is readable if
  925. one doesn't mind wading around a little bit of the MIME
  926. formatting. After this is a binary file in base 64
  927. encoding. It has been shortened for this example. The
  928. Base 64 stuff looks dorky in PostScript because 
  929. troff -me doesn't have a fixed font like courier.
  930.  
  931. Laurence Lundblade                       206-543-5617
  932.   lgl@cac.washington.edu
  933.      Computing and Communications, University of Washington
  934.  
  935. --16820115-1435684063-711161753:#2306
  936. Content-Type: APPLICATION/octet-stream; name=login
  937. Content-Transfer-Encoding: BASE64
  938. Content-Description: NeXT login program
  939.  
  940. AYAAAABAAAAAQAAAAQAAAL4AAAAAQAAAAEAAAJYAAAAAAAAAAAA
  941. AAAAAAAABfsAAADFAAAFswAAAAHAAAABwAAAAgAAAAAX190ZXh0
  942. AAAAF9fVEVYVAAAAAAAAAAAAAAAAAAAAAAQpAAAAxQAAAABAAAA
  943. AAAAAAAAAAAAABfX2Z2bWxpYl9pbml0MAAAX19URVhUAAAAAAAA
  944. KQAAAEwAAATuAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAF9fZnZt
  945. XQxAABfX1RFWFQAAAAAAAAAAAAAAAAR1AAAAAAAABToAAAAAgAA
  946. AAAAAAAAAAAAAAAX19jc3RyaW5nAAAAAAAAAF9fVEVYVAAAAAAA
  947. BHUAAADQQAAFOgAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABfX2Nv
  948. AAAAAAAX19URVhUAAAAAAAAAAAAAAAAFRgAAACsAAAYLAAAAAIA
  949. AAAAAAAAAAAAAAAAF9fZGF0YQAAAAAAAAAAAABfX0RBVEEAAAAA
  950. AAVxAAAAQgAABjYAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAX19i
  951. AAAAAAAAF9fREFUQQAAAAAAAAAAAAAAABbMAAAADAAAAAAAAAAC
  952. AAAAAABAAAAAAAAAABfX2NvbW1vbgAAAAAAAAAAX19EQVRBAAAA
  953. CAlcwAlZCBMT0dJTiBGQUlMVVJFJXMgT04gJXMsICVzAHN1AGxv
  954. Wxsb2Mgb3V0IG9mIG1lbW9yeQoAJXMgdG9vIGxvbmcNCgAvZXRj
  955. 3Vzci9hZG0vd3RtcAAAAABAKCMpUFJPR1JBTTpsb2dpbiAgUFJP
  956. WRzLTQyICBERVZFTE9QRVI6cm9vdCAgQlVJTFQ6U3VuIE5vdiAx
  957. zoyMSBQU1QgMTk5MAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  958. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  959. AAAAAAAAAAAAAAAAAAAAAAAAAAAQCgjKSBDb3B5cmlnaHQgKGMp
  960. DE5ODcsIDE5ODggVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNp
  961. 2FsaWZvcm5pYS4KIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgBAKCMp
  962. wk1LjQwIChCZXJrZWxleSkgNS85Lzg5AAAAABHUAAAR1f//////
  963. wAAEdQAABHUAAAR1AAAEdQAAAEsAxwREwT/GhkSDxcWAAAR2gAA
  964. AAR5gAAEeoAABHuAAAR8gAAEfYAABH6AAAR/gAAEgIAABIGAAAA
  965. AAB
  966.  
  967. --16820115-1435684063-711161753:#2306--
  968. .)l
  969. .sz 10
  970.  
  971. .uh "International Character Sets"
  972. .(x
  973. International Character Sets
  974. .)x
  975.  
  976. .pp
  977. Pine will pass ISO-2022 escapes sequences, though it will not read the
  978. escape character on input (yet). There is a compiled in list of about 20
  979. of these escape sequences that are passed. Other sequences with the
  980. Escape character will not be passed. The width of these escape sequences
  981. is taken into account when displaying the text on the screen. ISO-2022
  982. escape sequences are passed regardless of the type of text as tagged by
  983. the MIME formatting
  984.  
  985. .pp 
  986. Pine can display most character sets in ISO-8859-1 through ISO-8859-9 as
  987. well as US-ASCII, the default. Rather, Pine doesn't actually display the
  988. characters but passes them through; it is up to the actual display device
  989. to show the characters correctly. For example you will need some special
  990. terminal that can display Arabic to show ISO-8859-6 text. The character
  991. sets are:
  992. .(l
  993. US-ASCII    Standard 7 bit English characters
  994. ISO-88590-1    8 bit European "latin 1" character set
  995. ISO-88590-2    8 bit European "latin 2" character set
  996. ISO-88590-3    8 bit European "latin 3" character set
  997. ISO-88590-4    8 bit European "latin 4" character set
  998. ISO-88590-5    8 bit Cyrillic 
  999. ISO-88590-6    8 bit Arabic 
  1000. ISO-88590-7    8 bit Greek 
  1001. ISO-88590-8    8 bit European "latin 5"" character set
  1002. ISO-88590-9    8 bit Hebrew  
  1003. .)l
  1004.  
  1005. In all of these, the lower 7 bits are the same as US-ASCII. 
  1006.  
  1007. .pp 
  1008.  Pine makes use of the character set tags associated with text in MIME to
  1009. decide if text is displayable or not. To make use of these character sets
  1010. in Pine the character-set variable should be set to match the display or
  1011. terminal. Most fonts on X-terminals today are ISO-8859-1. When e-mail
  1012. arrives, the character set of the mail is checked and compared to the
  1013. setting of the character-set variable. If it matches, the text is
  1014. displayed. If it is determined that not all the character can be
  1015. displayed, the ones that can be will be, and the ones that can't will be
  1016. replaced by "_". For example if a French message arrives in ISO-8859-1 on
  1017. a display that shows US-ASCII, the US-ASCII character will be displayed. 
  1018. One may set show-all-characters in the .pinerc to "yes" and all text will
  1019. be displayed regardless of character set.
  1020.  
  1021. .pp
  1022. When mail is sent, Pine tags the outgoing text with the appropriate
  1023. character set. The character set it determined by the character-set
  1024. variable. If the character set is one of the ISO-8859 character sets and
  1025. there are no 8 bit characters entered the tag assigned will be US-ASCII. 
  1026.  
  1027. .sp 0.5i
  1028. .(x
  1029. .b "Section II --  Functions/Reference"
  1030. .)x
  1031. .ce 1
  1032. .b "Section II -- Functions/Reference"
  1033.  
  1034.  
  1035. .uh "Command Line Arguments"
  1036. .(x
  1037. Command Line Arguments
  1038. .)x
  1039.  
  1040. There are a few command line arguments. The order is not important:
  1041.  
  1042. .ip -i  1.3i
  1043. Go directly to the Mail Index, bypassing the main menu. 
  1044. .ip "-sort <type>" 1.3i
  1045. Specify the default sort order for the main index. The type may be one
  1046. of: "subject", "from", "size", "arrival", or "date". "Reverse" may be
  1047. added along with any of these types. 
  1048. .ip   -z 1.3i
  1049. Enable ^Z Berkeley style job control. The is normally off because
  1050. it's not something that naive users may understand
  1051. .ip  "-d <n>" 1.3i
  1052. Turn on debugging at level <n> where level <n> is between 1 and 9.
  1053. The output is written to the .pine-debugX files. Levels 8 and 9
  1054. turn of cushioning of aborts like bus errors and segmentation fault 
  1055. .ip   -k 1.3i
  1056. Turn on function key mode.
  1057. .ip   -r 1.3i
  1058. Go into restricted demo mode. Saving and exporting messages is 
  1059. not allowed and mail can only be addresses to oneself.
  1060. .ip   -conf 1.3i
  1061. Print out a sample/fresh system wide configuration file on
  1062. the standard output. This is *not* the same as per user
  1063. \&.pinerc. They have the same syntax and some of the same
  1064. variables, but they do have differences. 
  1065. .ip   "-f <folder>" 1.3i
  1066. Opens the named folder as Pine starts up. The folder name is
  1067. a path relative to the users "mail" subdirectory.
  1068. .ip   "-h"  1.3i
  1069. Provides a list, like this one, of arguments that can be given to
  1070. Pine.
  1071. .ip  -nr 1.3i
  1072. Goes into "anonymous news readonly" mode. This is mostly for a
  1073. particular use at the University of Washington. Pine behaves
  1074. appropriately for an unidentified user to read news, for example at a
  1075. public information terminal. The set of commands is greatly limited
  1076. and no updates to the news file status is allowed. This is usually
  1077. used with both the -f and the i- flags.
  1078.  
  1079.        
  1080. .uh "Address Book"
  1081. .(x
  1082. Address Book
  1083. .)x
  1084.  
  1085. .pp
  1086. The address book is stored in the user's home directory in the
  1087. file ".addressbook". The lines are of the format:
  1088. .(l I
  1089.           <nickname>TAB<fullname>TAB<address>
  1090. .)l 
  1091. If the entry is an address list then <address> is of the format:
  1092. .(l I
  1093.           (<address>,<address>,<address>,......)  
  1094. .)l I
  1095.   Normally entries are one per line unless it is a list and then the
  1096. entry extends until the closing parenthesis. If lines are encountered
  1097. in the address book that don't fit the format, those that don't have
  1098. two tabs, they are ignored. An older format is also supported where
  1099. the address lists don't have parenthesis. Spaces are not allowed in
  1100. nick names.
  1101.   
  1102. .pp
  1103. Entries in the address book may refer to other entries in the
  1104. address book. Lists may be infinitely nested. If addresses refer to
  1105. each other in a loop this is detected and flagged. The address will be
  1106. changed to "**** address loop ****".
  1107.  
  1108. .pp
  1109. This file is rewritten by Pine frequently in the format it thinks
  1110. proper so comments or other formatting introduced with a text editor
  1111. or other will not be maintained. For example, if you copy some bizarre
  1112. file to .addressbook and run Pine you're likely to find the file mostly
  1113. empty as Pine will only write back what it understands from the file.
  1114.  
  1115. .pp
  1116. There is a shell script, brk2pine.sh, that can convert Berkeley
  1117. style personal aliases in .mailrc files to Pine address book format.
  1118. It reads the users .mailrc by default or takes a filename as an
  1119. argument and produces the Pine address book on the standard output. A
  1120. good way for a user to run this is:
  1121. .(l I
  1122.           brk2pine.sh >> .addressbook 
  1123. .)l I
  1124. This will append the entries in the .mailrc to the addressbook.
  1125. System administrators can convert someone else's aliases with:
  1126. .(l I
  1127.           brk2pine.sh  ~joe/.mailrc >> ~joe/.addressbook
  1128. .)l I
  1129. You can look at the shell script itself for the grungy details      
  1130.       
  1131. .pp
  1132. The address book is kept sorted in order by the full name field. In
  1133. order for this to be sensible the full names should be last name, then
  1134. first name. Pine makes an attempt to encourage use of this format and
  1135. will reverse the order of any names that have a single comma in them
  1136. when they are in addresses on outgoing mail so it will be formatted
  1137. first then last. The T, Take, command that captures addresses off
  1138. incoming messages also attempts to reverse the name as it is inserted,
  1139. though it doesn't always succeed. The way it works can probably be
  1140. improved.
  1141.  
  1142. .pp
  1143. When the address book is written out, it is first written to a
  1144. temporary file and if that write is successful it is renamed to
  1145. \&.addressbook to guard against errors writing the file that might
  1146. destroy the whole address book. The address book is written after each
  1147. change.
  1148.  
  1149. .pp
  1150. The Pine address book is intended to be personal rather than shared or
  1151. global.  It's not a good way to run a mailing list. We decided not to
  1152. use or invent a scheme for a shared address book because it would
  1153. only be usable by Pine users and we wanted to encourage
  1154. interoperability. Pine use by one community should not preclude use of
  1155. other tools. Some thought has gone into a "work group" which would
  1156. allow sharing of address books. A work group would have a leader that
  1157. could set up the addresses and some members that would use it. There
  1158. aren't any plans to implement these "groupware" concepts though.
  1159.  
  1160. .uh "Sent Mail Pruning"
  1161. .(x
  1162. Sent Mail Pruning
  1163. .)x
  1164. .pp
  1165. Because the default behavior of Pine is to save a copy of each
  1166. outgoing message we thought it useful to encourage the users to
  1167. periodically prune their sent-mail folder. The first time a user
  1168. invokes Pine each month it will offer to rename sent-mail to
  1169. sent-mail-mmm-yyyy and then offer to delete all the old
  1170. sent-mail-mmm-yyyy folders with an explanation of why it is offering
  1171. to do so.  The user will only be asked once a month and the month the
  1172. user was last asked is recorded in the .pinerc file. If the user
  1173. has set default_fcc in his .pinerc to "" then no renaming will be
  1174. offered.
  1175.  
  1176. .uh  "Signatures and Reply/Forward formats"
  1177. .(x
  1178. Signatures and Reply/Forward formats
  1179. .)x
  1180.  
  1181. .pp
  1182. The formatting of replies and forwarded messages is perhaps a matter
  1183. of current style and personal taste. Pine encourages the user to put
  1184. his contribution before the inclusion of the original text of the
  1185. message being forwarded or replied to, though it does provide an
  1186. option to have it put at the bottom. This is contrary to some
  1187. conventions, but makes the message more readable.  The reader doesn't
  1188. have to scroll through the original text that he has probably already
  1189. been seen to find the new text. If the reader wishes to see the old
  1190. message(s), the reader can scroll further into the message.
  1191.  
  1192. .pp
  1193. When replying the user also has the option of including the original
  1194. message.  The original message included in a reply is always preceded
  1195. by a line like:
  1196. .(l
  1197. On Tue, 14 Jan 1992, Ken Lowe wrote: 
  1198. .)l
  1199.  
  1200. .pp
  1201. The header of the original
  1202. message is optionally included if the user sets "header-in-reply=yes"
  1203. in his .pinerc. Normally it is not included.
  1204.  
  1205. .pp 
  1206. If the file .signature exists it will be included in outgoing messages.
  1207. It is included before composition starts so the user has a chance to
  1208. edit it out if he likes. The signature is included at the beginning of
  1209. the forwarded message or reply in order to keep it with the new
  1210. text that is being added. If the filename .signature conflicts with
  1211. signatures used with other mail or news programs, the file name read
  1212. for the signature can be changed by setting the "signature-file"
  1213. variable in the .pinerc.
  1214.  
  1215. .pp
  1216. If "old-style-reply=yes" is included in the .pinerc then the signature
  1217. will be appended to the end of the message after any included text.
  1218. This is the more conventional way of including signatures.
  1219.  
  1220. .(x
  1221. Spelling checker
  1222. .)x
  1223. .uh "Spelling checker"
  1224.  
  1225. .pp
  1226. Pine and Pico use the standard UNIX spelling checker. Lines
  1227. beginning with ">" (messages included in replies) are not checked. You
  1228. may substitute a different spelling checker or use the usual, spell
  1229. with arguments, by setting the SPELL environment variable to the
  1230. command to be executed. The message text to be checked is on the
  1231. standard input and the incorrect words are expected on the standard
  1232. output. 
  1233.  
  1234. .pp
  1235. Words can
  1236. be added to it's dictionary. Here's a description of how it can be
  1237. done on some versions of UNIX contributed by Bob Hurt.
  1238.  
  1239. .pp
  1240. In case anyone besides me uses the Spell-checking function in Pine
  1241. (Control-T) and has words highlighted that are "correct" (spelling is
  1242. relative, IMO), here's how to include a list of non-standard issue words:
  1243.  
  1244.  
  1245. .ip "Step 1:"
  1246. Make a file with all the words you want to include in your new
  1247. dictionary.  I did mine with one word per line in alphabetical
  1248. order.  Caps don't matter at all, as far as I know.
  1249.  
  1250. .ip "Step 2:"
  1251. At the UNIX prompt, type: 
  1252. "cat [word file] | spellin /usr/dict/hlista > [new dict name]"
  1253. where [word file] is the file you just created and [new dict name]
  1254. is the name of the new dictionary that Pine will look at instead of
  1255. the standard /usr/dict/hlista.  I named my word file .bobwords and 
  1256. my dictionary .bobspell so I don't have to see them when I do a "ls"
  1257. command (ls doesn't list "dot" files).  I also put the above command
  1258. into my .alias file as the command "makedict" so I can add a word
  1259. to my word file and easily recreate my dictionary.
  1260. NOTE: the new dictionary is in something called a "hashed" format,
  1261. and can't be read normally.
  1262.  
  1263. .ip "Step 3:"
  1264. Check your new dictionary.  At the UNIX prompt, type: 
  1265. "cat [word file] | spellout [new dict name]"
  1266. If you did everything correctly, it should just give you another
  1267. prompt.  If it lists any of the words in your file, something is
  1268. wrong.  I can try and help if all else fails.
  1269.  
  1270. .ip "Step 4:"
  1271. Now you have to tell UNIX to use your dictionary instead of the standard
  1272. one by setting the environment variable SPELL to access your dictionary.
  1273. Go into your .login or .cshrc file in your root directory (it doesn't
  1274. seem to make a difference which one you use) and add the line: "setenv
  1275. SPELL "spell -d [new dict name]"". I also created an alias for SPELL in
  1276. my .alias file so I can use the UNIX spell command to spell-check a file
  1277. outside of Pine.  (The .alias line is: alias spell 'spell -d [new dict
  1278. name]')
  1279.  
  1280. .ip "Step 5:"
  1281. Now you need to logoff and log back on to let UNIX look at your .login
  1282. (or .cshrc) file.  I think you can do this by typing: "source .login" at
  1283. the UNIX prompt instead of logging out, but if Step 3 worked above and
  1284. Pine fails, try logging out.  I'm fuzzy on what the command "source .login"
  1285. does.
  1286.  
  1287. .pp
  1288. That should do it.  Go into Pine and try it out.  Good luck.
  1289. Bob Hurt
  1290.   
  1291. .(x  
  1292. Postponing mail
  1293. .)x
  1294. .uh "Postponing mail"
  1295.  
  1296. .pp
  1297. Composition of a half-done message may be postponed to a later time.
  1298. Giving the ^O command in the composer does this. While a message is
  1299. postponed, other messages can be composed. When the user goes into
  1300. compose while a message is postponed he will be asked if he wants to
  1301. continue the postponed message. Only one message may be postponed at a
  1302. time. We would like Pine to be able to have more than one postponed
  1303. messages, but haven't got around to it mostly because some work would
  1304. have to be done to make the user interface nice. This is a good way to
  1305. quickly reference other messages while composing.
  1306.  
  1307. .pp
  1308. In Pine 3.0 there are some problems postponing messages that have MIME
  1309. components. Messages that have attachments that are local files can be
  1310. postponed without any problems. The postponed message will only store a
  1311. reference to the file and not the actual file, so the file should not be
  1312. deleted or renamed until the message is sent. Any other attachments will
  1313. be dropped. These would have resulted from forwarding or replying to a
  1314. message with multiple parts. Eventually this will be fixed.
  1315.  
  1316. .pp 
  1317. Postponing messages that use 8 bit characters sets (and therefore
  1318. quoted-printable encoding) does not work correctly either. The message
  1319. will not be decoded upon resumption of the composition leaving things
  1320. like "=D6" in the file where the 8 bit characters where. Eventually
  1321. this will be fixed.
  1322.  
  1323. .(x
  1324. Interrupted Mail
  1325. .)x
  1326. .uh "Interrupted Mail"
  1327.  
  1328. .pp
  1329. If the user is composing mail and is interrupted by being disconnected
  1330. (SIGHUP or end of file on the standard input), Pine will save the
  1331. interrupted composition and allow the user to continue it when he
  1332. resumes Pine. A message will be given that an interrupted message can
  1333. be continued as the user starts Pine. The user should go into compose
  1334. to continue and will be asked if the interrupted message should be
  1335. resumed. To get rid of an interrupted message continue composing, going all
  1336. the way into the composer, and then cancel the message with ^C.
  1337.  
  1338. .(x
  1339. Printers and printing
  1340. .)x
  1341. .uh "Printers and printing"
  1342.  
  1343. .pp
  1344. Pine can print to the standard UNIX line printers or to printers
  1345. attached to ANSI terminals using the escape sequences to turn the
  1346. printer on and off.  The user has a choice of three printers in the
  1347. configuration.
  1348.  
  1349. .pp
  1350. The first setting, "attached-to-ansi" makes use of escape sequences
  1351. on ANSI/VT100 terminals. It uses "<ESC>[5i" to begin directing all
  1352. output sent to the terminal to the printer and then "<ESC>[6i" to
  1353. return to normal. Pine will send these escape sequences in
  1354. "attached-to-ansi" mode. This also works with most ANSI/VT100
  1355. emulators on Macs and PC's such as kermit, NCSA telnet, VersaTerm Pro
  1356. and WinQVT. It has come to be a popular feature, though sometimes
  1357. generating a lot of questions because the various emulators implement
  1358. the print feature differently. For example NCSA telnet requires
  1359. "capfile = PRN" in the config.tel file. It doesn't work at all on some
  1360. others like the telnet provided with PC-NFS.
  1361.  
  1362. .pp
  1363. The second selection is the standard UNIX print command. The default
  1364. here is "lpr", but it can be changed on a system basis to anything so
  1365. desired in /usr/local/lib/pine.conf.
  1366.  
  1367. .pp
  1368. The third selection is the users personal choice for a UNIX print
  1369. command. The text to be printed is piped into the command. Enscript or
  1370. lpr with options are popular choices. The actual command is retained
  1371. even if one of the other print selections is used for a while.
  1372.  
  1373. .pp
  1374. A small C program, ansiprt.c, is included in the contrib directory. This
  1375. is can be used to get Pine to print on PostScript printers in conjunction
  1376. with enscript. Once compiled and installed, ansiprt can be used in a
  1377. print command like this:
  1378. .(l
  1379. enscript -p - | ansiprt
  1380. .)l
  1381. What ansiprt does, is read the standard input and write to /dev/tty. This
  1382. is needed because Pine reads the standard output and error of the print
  1383. command to present to the user as the result of the print job. Ansiprt
  1384. also sends the ANSI escape sequences to turn the printer on and off.
  1385.  
  1386. .(x
  1387. Function Keys and Keymaps
  1388. .)x
  1389. .uh "Function Keys and Keymaps"
  1390.  
  1391. .pp
  1392. The standard Pine uses alphabetic keys for most commands by default,
  1393. and control keys in the composer.  Despite possible appearances the
  1394. current bindings are the result of much discussion and thought. (It's
  1395. very unlikely we'll change them). Currently all the commands in the
  1396. composer are single control characters. This keeps things very neat
  1397. and simple for users. There are a few control characters left, and
  1398. these are being reserved for commands to attach files to outgoing
  1399. messages. Two character commands in the composer are a possibility,
  1400. but we're trying to avoid them because of the added complexity for the
  1401. user. 
  1402.  
  1403. .pp
  1404. Control-S, Control-Q, Control-H and Control-\\ are specifically not
  1405. used for commands. This is an attempt to avoid configuration and
  1406. preempt some problems.  Control-H is treated the same as the delete
  1407. key so, the backspace or delete key always works regardless of any
  1408. configuration. This also keeps Pine out of trouble if Control-S and
  1409. Control-Q are used for flow control.
  1410.  
  1411. .pp
  1412. Pine can also operate in a twelve function key mode. To go into this
  1413. mode invoke "pine -k" or "pinef". You can link or copy the "pine"
  1414. executable to "pinef" to install "pinef".  The command menus at the
  1415. bottom of the screen will show F1-F12 instead of the alphabetic
  1416. commands.  The escape sequences for the function keys correspond to
  1417. those used on PC's running a locally modified version of NCSA telnet
  1418. and are similar to vt100 keypad keys.  They are:
  1419.  
  1420. .(l
  1421.     ANSI/VT100    VT52
  1422. F1:    <ESC>OP    <ESC>=a
  1423. F2:    <ESC>OQ    <ESC>=b
  1424. F3:    <ESC>OR    <ESC>=c
  1425. F4:    <ESC>OS    <ESC>=d
  1426. F5:    <ESC>Op    <ESC>=e
  1427. F6:    <ESC>Oq    <ESC>=f
  1428. F7:    <ESC>Or    <ESC>=g
  1429. F8:    <ESC>Os    <ESC>=h
  1430. F9:    <ESC>Ot    <ESC>=i
  1431. F10:    <ESC>Ou    <ESC>=j
  1432. F11:    <ESC>Ov    <ESC>=k
  1433. F12:    <ESC>Ow    <ESC>=l
  1434. .)l
  1435.  
  1436. .pp
  1437. Pine has the escape sequences for a number of conventions for arrow
  1438. keys hard coded and does not use termcap to discover them. This is
  1439. because termcap is sometimes incorrect, and because many users have
  1440. PC's running terminal emulators that don't conform exactly to what
  1441. they claim to emulate. Pine also traps escape sequences for a number
  1442. of common function keys so user don't get an error message or have an
  1443. unexpected command
  1444. executed for each character in the function keys escape sequence. Some
  1445. arrow keys on old terminals send single control characters like
  1446. control-k. These arrow keys will not work with Pine (One even sends
  1447. control-\). The most common set is:
  1448.  
  1449. .(l
  1450. Up:    <ESC>[A    <ESC>?x    <ESC>A    <ESC>OA
  1451. Down:    <ESC>[B    <ESC>?r    <ESC>B    <ESC>OB
  1452. Right:    <ESC>[C    <ESC>?v    <ESC>C    <ESC>OC
  1453. Left:    <ESC>[D    <ESC>?t    <ESC>D    <ESC>OD
  1454. .)l
  1455.  
  1456. .pp
  1457.  It is possible to configure an NCD X-terminal so some of the function
  1458. keys operate. The following are the details...
  1459. .sz 9
  1460. Well, with Brad Greer's
  1461. help, I have been successful at mapping selected keys in pine running in
  1462. an xterm.  I thought you might be interested in how it worked for me.
  1463.  
  1464. .ip 1
  1465. Start up pine from an xterm, also specifying a "resource name." 
  1466. This resource name will allow the user to specify resources for pine
  1467. (that deviate from the defaults).
  1468. -e.g., xterm -name Pine -e pine & 
  1469. (the resource name "Pine" has a corresponding resource 
  1470. section in the .Xdefaults file)
  1471.  
  1472. .ip 2.
  1473. In my .Xdefaults file, I have the following "translations", using 
  1474. lower hex values:
  1475.  
  1476. .(l
  1477. Pine*VT100.Translations: #override \n\    
  1478. <Key>Delete:    string(0x04)    \n\    
  1479. <Key>End:    string(0x05)    \n\    
  1480. <Key>Escape:    string(0x03)    \n\    
  1481. <Key>Home:    string(0x01)    \n\    
  1482. <Key>Next:    string(0x16)    \n\    
  1483. <Key>Prior:    string(0x19)    \n\    
  1484. <Key>KP_Enter:    string(0x18)    \n\    
  1485. .)l
  1486.  
  1487. .pp
  1488. These seemed to be good candidates for remapping (i.e., ease-of-use &
  1489. similarity to existing mainstream software).  Already, they have improved
  1490. the "quality" of my life in pine.
  1491.  
  1492. .pp
  1493. One keymap I was not successful at was the action of deleting from the
  1494. cursor to the end-of-the-line (NOT the entire line as ^K does).  Often I
  1495. only want to delete just part of a line, not the whole line. Any ideas? 
  1496. The program xedit works this way.  I'd appreciate any feedback you can
  1497. provide.  I hope the above information proves helpful.... 
  1498. .sz 10
  1499.  
  1500. .(b
  1501. .pp
  1502. The following is a rough keymap for most of Pine.
  1503.  
  1504. .(l
  1505. KEY    MAIN    VIEW    FLDR    ADRBK    CMPSE    HDER
  1506. A    AdrBk    Attach    Add    Add    |<-    |<-
  1507. B                    <-    <-
  1508. C    Cmpse    Cmpse    Cncl    Cncl    Cncl    Cncl
  1509. D        Delete    Delete    Delete    Delete    Delete
  1510. E        Export        Edit    ->|    ->|
  1511. F    Folders    Forward            ->    ->
  1512. G        Go fldr    Go fldr        Help    Help
  1513. H                    Bk spc    Bk spc
  1514. I    Index    Index            TAB    TAB
  1515. J        Jump            Justify    
  1516. K                    Kill ln    Kill ln
  1517. L        Print    Print    Print    Redraw    Redraw
  1518. M        Main    Main    Main     CR    CR
  1519. N    News    Next            Nxt ln    Nxt ln    
  1520. O    Other    Other    Open        Postpone
  1521. P        Prev            Prv ln    Prv ln
  1522. Q    Quit    Quit            ****    ****
  1523. R        Reply    Rename        Rd file    Rch hdr
  1524. S        Save    Save    Crt Lst    ****    ****
  1525. T        Tk Addr        Add2lst    2 Spell    2 A bk
  1526. U        Undelete        Un Del    Un Del
  1527. V    View     View            Scrll D
  1528. W        Where    Where     Where     Where    
  1529. X        Expunge            Send    Send
  1530. Y                    Scrll U
  1531. Z        Sort            Suspend    Suspend
  1532. [                    ****    ****
  1533. \\                    ABORT    ABORT
  1534. ]                    Telnet    Telnet
  1535. \\^
  1536. _
  1537. ?        Help    Help    Help    
  1538. \-        Prev pg    Prev pg    Prev pg    
  1539. SPACE        Next pg    Next pg    Next Pg    Nxt wrd    Nxt wrd
  1540. .)l
  1541. .)b
  1542.  
  1543. .(x
  1544. New Mail Notification
  1545. .)x
  1546. .uh "New Mail Notification"
  1547.  
  1548. .pp
  1549. Pine checks for new mail every 30 seconds. It only has to check the
  1550. time stamp on the mail file, so doing this doesn't place a load on the
  1551. system. If you really don't want to wait you can force a new mail
  1552. check by attempting to move the cursor off the end of the message
  1553. index three times. It'll beep and complain as you do this, but it will
  1554. check for new mail on the third try. 
  1555.  
  1556. .pp
  1557. When there is new mail, it will be shown in the index, the screen
  1558. will beep and a message showing the sender and subject will be
  1559. displayed. If there has been more than one new message since you last
  1560. issued a command to Pine, it will show the count of new messages and
  1561. the sender of the last one.
  1562.  
  1563. .pp
  1564. Other UNIX new mail notification methods work with different degrees of
  1565. success with Pine. Most expect the mail to be taken out of the
  1566. /usr/spool/mail file and then file to be truncated. Pine leaves it
  1567. there so you can switch between different mailers unlike some other
  1568. e-mail programs that copy all the mail to a private special-format file.
  1569.  
  1570. .ip biff: 
  1571.  
  1572.  
  1573. .ip wnewmail:
  1574.  
  1575. .ip csh:
  1576. If the mail variable is set in the csh it will check for new mail
  1577. periodically. It does this by checking the modification times on the
  1578. /usr/spool/mail file. If the access time is less than the modification
  1579. time and modification time and the access time are greater than the last
  1580. time a check was made it prints "You have mail". The message will be
  1581. "You have new mail" if the modification time is greater than the time
  1582. the last command was executed.
  1583.  
  1584. .ip ""
  1585. This doesn't work perfectly with Pine because Pine modifies the mail
  1586. file when it changes message status and expunges messages leading the
  1587. shell to believe there is new mail. 
  1588.  
  1589. .ip login:
  1590. The login program prints "You have mail" if there is anything
  1591. in /usr/spool/mail. With Pine this is always the case, so it will
  1592. always give this message. On most systems it will say "You have new
  1593. mail" if the modification time is later than the access time. Though
  1594. Pine rewrites the mail file when it exists to delete mail messages and
  1595. update status, it resets the modification time to be earlier than the
  1596. access time so this mechanism should work. When you have new mail
  1597. login will say so.
  1598.  
  1599. .(x
  1600. Mail folder checkpointing
  1601. .)x
  1602. .uh "Mail folder checkpointing"
  1603.  
  1604. .pp
  1605. Periodically Pine will save the whole mail folder to disk to
  1606. prevent loss of any mail or mail status in case Pine gets interrupted,
  1607. disconnected or crashes. The period of time Pine waits to do the
  1608. checkpoint is carefully calculated to be minimally intrusive. The
  1609. timing can be changed at compile time in the os_xxx.h file and the
  1610. delays are divided into levels
  1611.  
  1612. .ip "Good Time:"  1.5i
  1613. This occurs when Pine has been idle for more than 30 seconds. In this
  1614. case Pine will checkpoint if 12 changes to the file have been made or
  1615. at least one change has been made and a checkpoint hasn't been done
  1616. for 5 minutes.
  1617.  
  1618. .ip "Bad Time:"   1.5i
  1619. This occurs just after Pine has executed some command. Pine will
  1620. checkpoint if there are 36 outstanding changes to the mail file or at
  1621. least one change and not checkpoint for 10 minutes.
  1622.  
  1623. .ip "Very Bad Time:" 1.5i
  1624. Done when composing a message. In this case Pine will only checkpoint
  1625. if at least 48 changes have been made or one change has been made in
  1626. the last 20 minutes with no check point. 
  1627.  
  1628. .(x
  1629. Disk Quotas and Usage
  1630. .)x
  1631. .uh "Disk Quotas and Usage"
  1632.  
  1633. .pp
  1634. All mail files are stored under the "mail" subdirectory. A command
  1635. in the "other" menu shows the disk usage and free space. The total
  1636. that is shown for mail folder is the total of the files found in the
  1637. mail subdirectory. The shown number for the free space is either the
  1638. space left in the users disk quota or the space left on the disk
  1639. drive, whichever is smaller. The text associated with the message will
  1640. say which. If the user is over his quota, that will be shown and a
  1641. message will be displayed when the user starts up Pine. Pine knows how
  1642. to access the standard UNIX quotas data bases, well at least two
  1643. versions of it.
  1644.  
  1645. .(x
  1646. Alternate editor for composing
  1647. .)x
  1648. .uh "Alternate editor for composing"
  1649.  
  1650. .pp
  1651. In Pine 3.0 you can use any text editor such as vi or emacs, for
  1652. composing the message text. The addresses and subject still must be
  1653. edited using the standard Pine composer. It operates in one of two
  1654. ways. If you select "old-growth" mode in your .pinerc you can type
  1655. "^_" while in the composer and be prompted for the editor. If you set
  1656. the "editor" variable in your .pinerc then "^_" will appear in the
  1657. composer key menu and will invoke the configured editor when you type
  1658. it. 
  1659.  
  1660. .pp
  1661. We know that many folks would like to use the custom editor to edit
  1662. the mail header as well. We considered several designs for this and
  1663. didn't come up with one that we liked and that was easy to implement.
  1664. One of the main problems is that you lose access to the address book.
  1665. There will probably be further discussion on this!...
  1666.  
  1667. .(x
  1668. Pico
  1669. .)x
  1670. .uh "Pico"
  1671.  
  1672. .pp
  1673. The message composer in Pine is actually compiled in and part of
  1674. Pine. Pico is a stand-alone version of that editor that can be used to
  1675. edit text files or other. It has word wrap, justification and spelling
  1676. just like the composer in Pine. It has the following command line
  1677. options: 
  1678.  
  1679. .ip   -f    
  1680. Turn on function keys
  1681. .ip    -nN   
  1682. Turn on new mail checking every N seconds
  1683. .ip     -v
  1684. View file only, no editing
  1685. .ip    -w    
  1686. Disable word wrap
  1687. .ip    -z    
  1688. Turn on ^Z suspension
  1689.  
  1690. The Pico man page has more details and lists more command line options.
  1691.  
  1692. .(x
  1693. Mail folders and formats
  1694. .)x
  1695. .uh "Mail folders and formats"
  1696.  
  1697. .pp
  1698. Just about all mail folders are kept in the "mail" subdirectory. The
  1699. one exception is "inbox" which is more of a place holder for what ever
  1700. is the standard place to get new mail on the system. The default
  1701. format used by Pine is the Berkeley mail format. It is used by the
  1702. standard "mail" command and by elm. Basically mail messages are
  1703. separated by lines that look like:
  1704.  
  1705. From deroest@daffy.cac.washington.edu  Fri Jan 11 14:32:33 1991
  1706.  
  1707. .pp
  1708. If a file doesn't look like this, Pine will consider it's format to
  1709. be invalid and refuse to open the file. The use of his format is also
  1710. the reason you will occasionally see ">From" in the mail message text.
  1711. The ">" must be inserted so there is no confusion between the text of
  1712. the message and the separator. This is a silly problem that should
  1713. have been solved long ago with a more reasonable mail file format. The
  1714. sender and date information in the separator are not used by Pine.
  1715. You can fool Pine into thinking a file is a mail folder by adding a
  1716. message separator at the beginning of the file and where ever you want
  1717. message boundaries. Pine believes the message header ends at the first
  1718. blank line in message.
  1719.  
  1720. .pp
  1721. Pine also knows how to read other file formats, namely Tenex and
  1722. USENET News.
  1723.  
  1724. .pp
  1725. The inbox folder is treated specially. It is normally kept open
  1726. constantly so the arrival of new mail can be detected. The name
  1727. "inbox" refers to where ever new mail is retrieved on the system. If
  1728. the inbox-path variable is set, "inbox" refers to that. The
  1729. "sent-mail" and "saved-message" folders are also some what special.
  1730. They are automatically created if they are absent and recreated if
  1731. they are deleted.
  1732.  
  1733. .pp
  1734. Pine provides an "export" command to write the contents of a message
  1735. to a file for use outside of Pine. When a message is written this way
  1736. Pine pays attention to the umask for the setting of the file
  1737. permissions. When a message is saved to a folder, the folder is
  1738. created so that read or  write permission is granted only to the owner of
  1739. the file.
  1740.  
  1741. .(x
  1742. Message Status and the expunge command
  1743. .)x
  1744. .uh "Message Status and the expunge command"
  1745.  
  1746. .pp
  1747. Each message has some status flags. Pine only uses a few of the
  1748. flags supported by the Berkeley format and the c-client. A flag is set
  1749. if the message is new and hasn't been read. An "N" shows in the
  1750. messages index. The other flag used is "D" to mark a message as
  1751. deleted. The message is not actually deleted until the mail box is
  1752. expunged. The expunge operation basically deletes all the messages
  1753. marked for deletion. The user may give the "X" command to do an
  1754. expunge any time he wants to, or may wait till he is exiting Pine or
  1755. closing the folder, when Pine offers to do the expunge.  Internally,
  1756. the message status is kept in the "Status:" and "X-Status:" fields in
  1757. the message header.
  1758.  
  1759. .(x
  1760. Sorting
  1761. .)x
  1762. .uh "Sorting"
  1763.  
  1764. .pp
  1765. The mail index may now be sorted by subject, size, sender, date and
  1766. arrival order. The "z" command will prompt the user for the sort
  1767. order. The sort order can also be specified on the command line with
  1768. the -sort flag. When a user changes folders, the sort order will go
  1769. back to the original sort order, usually the arrival order. The
  1770. command line sort specification changes the original sort order. Each
  1771. sort order can also be reversed. 
  1772.  
  1773. .pp
  1774. When a folder is sorted and new mail arrives in the folder it will be
  1775. inserted in it's properly sorted place. This can be a little odd when
  1776. the folder is sorted by something like the subject.
  1777.  
  1778. .pp
  1779. The sorts are all independent of case. and ignore leading or trailing
  1780. white space. The subject sort ignores "Re:" at the beginning and will
  1781. soon ignore "(fwd)" at the end. The sort of sender sorts by the
  1782. userid, not the full name. The arrival sort is basically no sort at
  1783. all and the date sort depends on the format of the date. Some dates
  1784. are in strange formats and are unparsable. The time zone is also taken
  1785. into account.
  1786.  
  1787. .pp
  1788. Sorting large mail folders can be very slow since it requires fetching
  1789. all the headers of the mail messages. Usually only the first sort is
  1790. slow though since Pine keeps a copy of all the headers. One exception
  1791. is sorting in reverse arrival order. This is fast because no headers
  1792. have to be examined. Pine will show progress as it is sorting.
  1793.  
  1794. .(x
  1795. Feature level
  1796. .)x
  1797. .uh "Feature level"
  1798.  
  1799. .pp
  1800. Pine now has a settable feature level for users of different
  1801. experience. This is only partially implemented in Pine 3.0. The
  1802. planned levels are "seedling", "sapling" and "old-growth". In Pine 3.0
  1803. there are only "sapling" and "old-growth" modes, and the only
  1804. difference is that the "h" command to show full headers is available
  1805. in old-growth mode. A command to pipe messages into other programs is
  1806. next in the plan for old-growth.
  1807.  
  1808. .(x
  1809. Anonymous Readonly Mode for News
  1810. .)x
  1811. .uh "Anonymous Readonly Mode for News"
  1812.  
  1813. .pp
  1814.  
  1815. Pine has a mode appropriate for anonymous access to a folder or a
  1816. news group. This leaves off the sender of the message in the index and
  1817. allows no status updates to the folder or news group. Messages cannot
  1818. be deleted or saved. Mail cannot be composed, though mail can be
  1819. forwarded. This is usually used with the -i and -f options.
  1820.  
  1821. .sp 0.5i
  1822. .(x
  1823. .b "Section III -- Compiling, Debugging, Porting and Source Code"
  1824. .)x
  1825. .ce 1
  1826. .b "Section III -- Compiling, Debugging, Porting and Source Code"
  1827.  
  1828. .(x
  1829. Debug files 
  1830. .)x
  1831. .uh "Debug files"
  1832.  
  1833. .pp
  1834. If Pine is compiled with the DEBUG option on (the default in Pine
  1835. 2.0), then pine will produce debugging output to a file. The file is
  1836. normally .pine-debugX in the users home directory where X goes from 1
  1837. to 4. Number 1 is always the most recent session and 4 the oldest. 4
  1838. are saved because often the user has gone in and out of Pine a few
  1839. times after a problem has occurred before the expert actually gets to
  1840. look at it. The amount of output in the debug files varies with the
  1841. debug level. The default is level 2. This shows very general things
  1842. and records errors. Level 9 produces rather copious amounts of output
  1843. for each key stroke.
  1844.  
  1845. .(x
  1846. Memlog
  1847. .)x
  1848. .uh "Memlog"
  1849.  
  1850. .pp
  1851. There's a few source files and hooks in the Pine source to log each
  1852. memory allocation and each free. This was used to check and debug
  1853. memory leaks. The few found are fixed now. The code is retained for
  1854. future checking. Two makefiles exist for compiling with the
  1855. memory logging turned on for the "nxt" and "ult" platforms. This
  1856. hasn't been used for a while so it might not quite work. A log of the
  1857. allocations and frees is written to a file along with frequency counts
  1858. and the net outstanding amount of leaked memory. Pine runs much less
  1859. efficiently when this is enabled.
  1860.  
  1861. .(x
  1862. Signals, aborts and core dumps
  1863. .)x
  1864. .uh "Signals, aborts and core dumps"
  1865.  
  1866. .pp
  1867. Pine catches SIGHUP and does the best thing with it. If a message is
  1868. under composition it will be saved as interrupted mail which can be
  1869. continued by going into compose. SIGHUP occurs when the session is
  1870. disconnected for reasons such as a modem hanging up, the client
  1871. workstation rebooting or other. Pine also catches SIGQUIT (^\\) and asks
  1872. the user if he really wants to quit. This was added because we found
  1873. many pine core files generated by nothing other than ^\\. ^\\ is
  1874. retained so there is some emergency exit.
  1875.  
  1876. .pp
  1877. If pine is not compiled for debugging or the debug level is set low
  1878. Pine will also catch the other abort signals like SIGSEGV
  1879. (segmentation fault) so it can clean up the tty modes and exit. It
  1880. prints a message that a bug in Pine has been encountered and dumps a
  1881. core file. If the debug level 8 or higher then these signals won't be
  1882. caught and the core dump will just happen.
  1883.  
  1884. .(x
  1885. Pine help text
  1886. .)x
  1887. .uh "Pine help text"
  1888.  
  1889. .pp
  1890. The file pine.hlp contains all the help text for Pine. Normally, it
  1891. is compiled right into the Pine binary as strings. This is done to
  1892. simplify installation and configuration. The pine.hlp file is in a
  1893. special format that is documented at the beginning of the file.
  1894. Basically it is divided into sections, each with a name that winds up
  1895. being referenced as a global variable. There is also some special
  1896. formatting to keep things lined up and to allow for substitutions in
  1897. the help text depending on whether the key labels are the standard
  1898. alphabetic/mnemonic or they are the function keys. These files are
  1899. processed by two awk scripts and turned into C files that are in turn
  1900. compiled in to Pine.
  1901.  
  1902. .pp  
  1903. This scheme can increase efficiency when Pine is compiled to have the
  1904. strings as part of shared read-only text.  This works on machines that
  1905. have separate instruction and data space, which is most machines today
  1906. Rather than each process having to read in the help text from a file,
  1907. the strings are shared by all executing processes on the machine and
  1908. demand paged.  At the moment the Dynix port and the NeXT port do this.
  1909. How to go about this for other ports will depend on the compiler. On
  1910. the NeXT it is automatic. With Dynix it required some work. The file
  1911. with the help text had to be compiled with the -R option. In addition,
  1912. on Dynix, xstr is used to reduce all the identical strings to a single
  1913. occurrence. This was done because higher performance was needed for
  1914. the Dynix version because of very heavy use.
  1915.  
  1916. .(x
  1917. Source code organization 
  1918. .)x
  1919. .uh "Source code organization "
  1920.  
  1921.  The source code is in four directories with a shell script,
  1922. "build", that descends into each and invokes the appropriate makefile
  1923. to compile Pine and related programs. The directories are: 
  1924.  
  1925.   - c-client: This is a set of library routines that form an interface
  1926. to the mail store and act as a switch between different mail file
  1927. formats/drivers. Currently it supports IMAP, Berkeley format (elm,
  1928. mail..), Tenex and netnews. It also does all the RFC-822 parsing (a
  1929. very thorough job) and is one of the pilot implementations of the
  1930. upcoming Internet standard, "MIME" for multipart mail. Also, in the
  1931. c-client directory is mtest, a very simple stand alone mail client
  1932. that uses the c-client. It's useful for testing the c-client or imap
  1933. connections independent of a more involved mail client.  The c-client
  1934. included here is only a minimal part of the imap source tree. If you
  1935. plan on doing anything more with imap and the c-client than using or
  1936. porting Pine you should get the full imap source tree from
  1937. ftp.cac.washington.edu. Mark Crispin is the author of the c-client
  1938. and IMAP protocol.
  1939.  
  1940.   - pico: Pico stands for PIne's COmposer. The source here is for the
  1941. Pico library and the Pico main program. When compiled with Pine it is
  1942. the Pine message composer, spelling checker and such. When compiled
  1943. against the Pico main it is the stand alone Pico editor. Pico is in
  1944. part based on micro-emacs and is written by Mike Seibel
  1945.  
  1946.   - imapd: The imapd daemon. This is a small amount of source to turn
  1947. the c-client library into a daemon that runs on a mail server to serve
  1948. imap clients. This is only needed if you are using the imap protocol.
  1949.  
  1950.   - pine: The code here is the primary Pine user interface. It relies
  1951. on the c-client and pico libraries and implements all the Pine screens
  1952. except the composer. It also implements the address book,
  1953. configuration files and includes the on-line help text.
  1954.  
  1955.   - contrib: This directory contains contributed additions to Pine
  1956.  
  1957. .(x
  1958. Porting Pine to other Platforms
  1959. .)x
  1960. .uh "Porting Pine to other Platforms"
  1961.   
  1962. .pp
  1963. Substantial effort has gone into making Pine/Pico as portable as
  1964. possible. There are still, of course, a number of machine
  1965. dependencies.  We've picked a small number of platforms for which we 
  1966. will do our best to provide a tested and running port.  Currently
  1967. they are Ultrix, NeXT, SunOS, Dynix and AIX/370. We are also willing
  1968. to redistribute ports to other platforms as they conform to the
  1969. invented scheme for handling different platforms.
  1970.  
  1971. .pp
  1972. Each platform is given a three letter name (see the file
  1973. doc/pine-ports). Make up a new one for your new port. We've tried to
  1974. bring all potential platform dependencies into three files, os-xxx.h,
  1975. os-xxx.c and makefile.xxx where xxx is the three letter name of the
  1976. port. Thus any new port will hopefully just result in new versions of
  1977. these files and some notes for the pine-ports file. This is actually
  1978. nine new files because there are a set of these files for the
  1979. c-client, pico and pine source directories.
  1980.  
  1981. .pp
  1982. The make files are kept as simple and straight forward as possible
  1983. because many previous attempts at automatically figuring out what to
  1984. do seem to become complex and ineffective in what they set out to do:
  1985. make compiling and installing the program easy. Each port is for a
  1986. specific hardware/software platforms, also because past attempts to
  1987. generalize on versions of UNIX or some CPU architecture don't seem to
  1988. have gained much. Thus, there is a separate makefile for each platform
  1989. that calls the appropriate compiler, archiver and linker with the
  1990. appropriate flags.  Most of these makefiles are pretty similar. The
  1991. makefile also specifies which of the os-xxx.c and os-xxx.h files to
  1992. use. It is the root from which  all platform dependencies are
  1993. selected.  In some cases the makefile defines a symbol named after the
  1994. platform on which there can be dependencies in the source code.  Pine,
  1995. Pico and the C-client don't quite do everything the same (there are
  1996. three authors involved). Basically to build the source in a directory
  1997. for a given platform, run "make -f makefile.xxx" where "xxx" is the
  1998. the three letter name of the platform.
  1999.  
  2000. .pp
  2001.  
  2002.  The file os-xxx.h is used for general platform dependent #include's
  2003. and #defines. A few things that affect all the source are here, such
  2004. as a macro defining the type that qsort() and signal() return. All the
  2005. include files that have been found to vary from one platform to
  2006. another are also included here. In the case of Pine and Pico, there is
  2007. only one os-xxx.h file called os-unx.h for the officially supported
  2008. ports and inside it are #ifdefs on the platform specific symbol
  2009. defined in the makefile. For the current set of ports, which have more
  2010. in common than different, this is simpler.  If the changes to os-xxx.h
  2011. become large it will be better to create a new os-xxx.h file named for
  2012. the new platform.  We also prefer new os-xxx.c and os-xxx.c files for
  2013. new ports so that we don't have to merge any source.  There are a
  2014. number of Pine configuration settings that are defined here such as
  2015. the place it looks for certain files, defaults for the printer and
  2016. folder names, the maximum screen size and so on.
  2017.  
  2018. .pp
  2019. The os-xxx.c file contains functions that are potentially platform
  2020. dependent. Again, the idea is to gather all the dependencies in one
  2021. place. Pine and Pico use the same strategy here as used with os-unx.h.
  2022. Since Pine has been ported to both Berkeley and System V UNIX most of
  2023. the functions for any given port have been created thus doing a port
  2024. is usually a matter of finding the appropriate functions in from the
  2025. existing ports. For example, there are two ways different systems do
  2026. dates and time zones so you'll find two different versions of
  2027. rfc822_date() in c-client/os_aix.c, and c-client/os_ult.c. The other
  2028. c-client/os_xxx.c files have one or the other version of these functions.
  2029.   
  2030. .pp
  2031. It is strongly encouraged that no changes be made to the general source
  2032. when porting and that all changes be contained to the three/nine system
  2033. dependent files. The object is to maintain source code integrity and
  2034. assimilate ports to new platforms rapidly. The more conventional way to
  2035. do this is with a large collection of #ifdefs. The problem with this is
  2036. that adding a port for a new platform implies changing the source code
  2037. for all the other platforms and thereby risks breaking them. This scheme
  2038. in Pine has been designed to avoid that, at the cost of making it a
  2039. little harder to port Pine.
  2040.  
  2041. .bp
  2042. .(x 
  2043. Test Checklist
  2044. .)x
  2045. .uh "Test Checklist"
  2046.  
  2047. .pp
  2048. The following is a check list for testing a new port:
  2049.  
  2050. .nr 68 \n(ps
  2051. .nr ps 0v
  2052. .ip ___ 
  2053. Sending mail, check that full name is correct
  2054. .ip ___ 
  2055. Replying to and forwarding a message
  2056. .ip ___ 
  2057. Postponing message under composition
  2058. .ip ___ 
  2059. Make sure local user names are expanded
  2060. .ip ___ 
  2061. Test spelling checker
  2062. .ip ___ 
  2063. Catching of SIGHUP while message is composition
  2064. .ip ___ 
  2065. Setting of user-domain and use-only-domain in .pinerc
  2066. .ip ___ 
  2067. New mail notification. Should happen with Pine idle to check timeouts
  2068. .ip ___ 
  2069. Reading mail in index
  2070. .ip ___ 
  2071. Deleting and undeleting
  2072. .ip ___ 
  2073. Expunge to empty folder
  2074. .ip ___ 
  2075. Make sure that "~" expansion works
  2076. .ip ___ 
  2077. Save message to folder, check error conditions such as permission denied
  2078. .ip ___ 
  2079. Export message
  2080. .ip ___ 
  2081. Checkpointing (make 20 status changes, or 19 and wait 30 sec)
  2082. .ip ___ 
  2083. Open IMAP and RIMAP folders
  2084. .ip ___ 
  2085. Test opening bogus folders: invalid format, no permission
  2086. .ip ___ 
  2087. Open a USENET news group via IMAP
  2088. .ip ___ 
  2089. Pine -f option
  2090. .ip ___ 
  2091. Disk quotas and usage (over, under, and device space)
  2092. .ip ___ 
  2093. Change password
  2094. .ip ___ 
  2095. Lock keyboard
  2096. .ip ___ 
  2097. Address book operations
  2098. .ip ___ 
  2099. Take command
  2100. .ip ___ 
  2101. Send mail with empty address book
  2102. .ip ___ 
  2103. Make sure that SIGQUIT, ^\ confirmation works (check 
  2104. core dump too)
  2105. .ip ___ 
  2106. Test panic (Give '#' command on main menu with debug
  2107. level > 8)
  2108. .ip ___ 
  2109. Make sure SIGSTP, ^Z works (-z option)
  2110. .ip ___ 
  2111. Pinef
  2112. .ip ___ 
  2113. Sent-mail pruning
  2114. .ip ___ 
  2115. Printing using all three printer configurations
  2116. .ip ___ 
  2117. View help text & news
  2118. .ip ___ 
  2119. Folder list operations (rename, create, delete...)
  2120. .ip ___ 
  2121. Window resizing
  2122. .ip ___ 
  2123. Error messages for incorrect terminal types (try "foo" and "vt52")
  2124. .ip ___ 
  2125. Reading of /usr/local/lib/pine.conf
  2126. .nr ps \n(68u
  2127. .bp
  2128.  
  2129. .sp 0.5i
  2130. .(x
  2131. .b "Section IV -- Differences between version 2.4 and 3.0"
  2132. .)x
  2133. .ce 1
  2134. .b "Section IV -- Differences between version 2.4 and 3.0"
  2135.  
  2136. .pp
  2137. This may be a bit rough and tumble, but hopefully will provide
  2138. enough information for system administrators to know what they are
  2139. getting into by installing Pine 3.0 (3.02 by now). 
  2140.  
  2141. .pp
  2142. The biggest change in Pine is the support for MIME. This has affected
  2143. a lot of source code. All seems to be running well, but some of the
  2144. MIME functions themselves are not highly polished. See the section on
  2145. MIME for more details on what it is all about. The one case we've seen
  2146. where MIME can intrude into normal non-MIME operations is when
  2147. users either accidentally or intentionally include 8 bit characters in
  2148. outgoing messages. This will cause Pine to apply the quoted-printable
  2149. encoding to turn it into 7 bit ASCII since 8 bit characters are not allowed in
  2150. Internet mail (though it often works and some make use of it). Other
  2151. than the "Attchmnt:" field showing in the compose and the "A" command
  2152. in the Mail Viewer, most users will not notice any differences because
  2153. of the MIME support.
  2154.  
  2155. .pp
  2156. The Pine main menu has a bit of a new look. The "V" command has been
  2157. moved off the main menu as we found something like half of the Pine users
  2158. at the UW were not using the index at all. Instructors in the training
  2159. classes always had to introduce folks to the index. Some users would even
  2160. lose mail because they couldn't figure out where their mail was.  By
  2161. default, this version of Pine displays an explanation for the change in
  2162. the main menu and a message that the previous version can be had with
  2163. "pine.old". This can be turned off by putting "new-version=no" in
  2164. /usr/local/lib/pine.conf. The "News" item was moved into the "Other" menu
  2165. and the "Who to Call" text is now included as the first page of the help
  2166. text on the main menu.
  2167.  
  2168. .pp
  2169. Pine and Pico now include a file browser for selecting files to be
  2170. included "read in". The user can navigate his directory trees and
  2171. such. This is invoked by typing ^T when prompted for the file name.
  2172.  
  2173. .pp
  2174. New features that shouldn't have any caveat's are:
  2175.  
  2176. .nr 68 \n(ps
  2177. .nr ps 0v
  2178. .ip \(bu 
  2179. Index can be sorted by subject, sender, size, arrival or date
  2180. .ip \(bu 
  2181. Command line option to specify sort order
  2182. .ip \(bu 
  2183. Confirms with user before sending message to the mailer-daemon
  2184. .ip \(bu 
  2185. New command line option "-i" to go directly into the index
  2186. .ip \(bu 
  2187. New command line option "-nr" for news/readonly mode
  2188. .ip \(bu 
  2189. Bcc saved in sent-mail and shown when viewed
  2190. .ip \(bu 
  2191. Fixed bug causing core dumps with very long addresses
  2192. .ip \(bu 
  2193. No limit on the number of messages in a folder
  2194. .ip \(bu 
  2195. Fix for address book screen painting problem with Procomm and 
  2196. with composing on VT102s at low speeds
  2197. .ip \(bu 
  2198. Passes ISO-2022 character set shift escape sequences for the display of
  2199. Japanese and other languages
  2200. .ip \(bu 
  2201. Pays attention to umask when exporting messages to files
  2202. .ip \(bu 
  2203. Option in .pinerc to have signature at bottom of message
  2204. .ip \(bu 
  2205. More efficient screen painting for low speed use
  2206. .ip \(bu 
  2207. Upon opening a folder the current message is now first 
  2208. unread, ("N") message 
  2209. .ip \(bu 
  2210. Pine.conf and .pinerc variable can reference UNIX environment variables
  2211. .ip \(bu 
  2212. Long line wrapping improved, now broken at spaces
  2213. .ip \(bu 
  2214. Checkpointing is less frequent and at more opportune times
  2215. .ip \(bu 
  2216. Carries received date along properly for Berkeley mail file format
  2217. .ip \(bu 
  2218. Disable ^Z suspension when keyboard is locked
  2219. .ip \(bu 
  2220. Shows READONLY or CLOSED with the folder name in title bar
  2221. .ip \(bu 
  2222. When viewing mail, the header is displayed in the canonical "Full Name
  2223. <address> format". Order of header is also uniform.
  2224. .ip \(bu
  2225. Title bar format slightly different -- shows "Folder: "
  2226. .nr ps \n(68u
  2227.  
  2228. .pp
  2229. There is now, or will be different modes for different user levels.
  2230. Three modes are planed: "seedling", "sapling" and "old-growth".
  2231. Currently, Pine defaults to "sapling" mode. There is also "old-growth"
  2232. mode that adds the
  2233. "h" command to view the full header and the "^_" command in the
  2234. composer to select an alternate editor. These modes are selected with
  2235. the user-level variable in the .pinerc.
  2236.   
  2237. .pp
  2238. There are a number of new configuration variable for pine.conf and
  2239. .pinercs.
  2240.  
  2241. .(l
  2242. smtp-server
  2243. editor
  2244. image-viewer
  2245. feature-level
  2246. old-style-reply
  2247. signature-file
  2248. mail-directory
  2249. character-set
  2250. show-all-characters
  2251. new-version
  2252. .)l
  2253.  
  2254. .pp
  2255. One can now use their favorite editor to compose mail in Pine! If the
  2256. editor variable is set in the .pinerc the "^_" command to start the
  2257. editor will show in the composer. Alternately, when operating in
  2258. old-growth mode, the "^_" command can be given, even it it's not
  2259. displayed. You will be prompted for the editor of your choice.
  2260.  
  2261. .pp
  2262. There are now ports for Dynix/PTX and HP/UX. These are both System V
  2263. based and Pine is generally more portable to System V platforms.
  2264.  
  2265.  
  2266. .hx
  2267. .bp
  2268. .sz 20
  2269. .ce 2
  2270. - Pine Technical Notes -
  2271. .sp 0.2i
  2272. .sz 15
  2273. .br
  2274. Version 3.0, July 1992
  2275. .sp 0.2i
  2276. .sz 10
  2277. .xp
  2278. .sp 0.15i
  2279. (Note: This is not intended to be a complete document, only helpful notes)
  2280.  
  2281.